#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

#include "t3.h"



float **alocaMatriz(int qte_linha, int qte_coluna) {
	int i, j;
	float **matriz = (float **) malloc(sizeof(float *)*qte_linha);
	for (i = 0; i < qte_linha; i++) {
		matriz[i] = (float *) malloc(sizeof(float)*qte_coluna);
	}
	for (i = 0; i < qte_linha; i++) {
		for (j = 0; j < qte_coluna; j++) {
			matriz[i][j] = 0.0f;
		}
	}
	return matriz;
}



void desalocaMatriz(float **matriz, int qte_linha, int qte_coluna) {
	int i;
	for (i = 0; i < qte_linha; i++) {
		free(matriz[i]);
	}
	free(matriz);
}



void imprimeMatriz(float **matriz, int qte_linha, int qte_coluna) {
	int i, j;
	
	for (i = 0; i < qte_linha; i++) {
		for (j = 0; j < qte_coluna; j++) {
			printf("%f ", matriz[i][j]);
		}
		printf("\n");
	}
	printf("\n");
}



float *alocaVetor(int qte_linha) {
	int i;
	float *vetor = (float *) malloc(sizeof(float)*qte_linha);
	for (i = 0; i < qte_linha; i++) {
		vetor[i] = 0.0;
	}
	return vetor;
}



void desalocaVetor(float *vetor) {
	free(vetor);
}



void imprimeVetor(float *vetor, int qte_linha) {
	int i;
	for (i = 0; i < qte_linha; i++) {
		printf("%f ", vetor[i]);
	}
	printf("\n\n");
}



float valorMaxVetor(float *vetor, int qte_linha, char tipo) {
	int i;
	float max = 0.0f;
	float d;

	switch (tipo) {
		case NORMAL: {
			max = vetor[0];
			for (i = 1; i < qte_linha; i++) {
				// se v[i] > max, entao v[i] eh maior, senao continua
				if (vetor[i] > max) {
					max = vetor[i];
				}
			}
		} break;
		case ABSOLUTE: {
			max = fabs(vetor[0]);
			for (i = 1; i < qte_linha; i++) {
				// se v[i] > max, entao v[i] eh maior, senao continua
				d = fabs(vetor[i]);
				if (d > max) {
					max = d;
				}
			}
		} break;
	}
	
	return max;
}
